import java.util.HashMap;
import java.util.HashSet;

/**
 * 哈希表
 */
public class HashSetAndHashMap {
    public static void main(String[] args) {
        String str1= new String("Hello");
        String str2= new String("Hello");
        System.out.println(str1 == str2);     //false  这里比较的内存的地址

        System.out.println(str1.equals(str2));//true   这里比较的是引用里存的值
        HashSet<String> set = new HashSet<>();
        set.add(str1);
        //HashSet只关心里面存的值，不关心地址是否不相同
        System.out.println(set.size()); //1
        System.out.println(set.contains(str1));
        System.out.println(set.contains(str2));
        set.add(str2);
        System.out.println(set.size()); //1

        set.remove(str1);
        set.clear();

        System.out.println("===========================");

        HashMap<String,String> map = new HashMap<>();
        map.put(str1,"World");
        System.out.println(map.containsKey("Hello"));
        System.out.println(map.get(str2));  //和HashSet一样只关心值是否相同，不关心地址是否不同
        map.put(str2,"World");
        System.out.println(map.size());  //1
        map.remove("Hello");
        System.out.println(map.size());
        map.clear();
        System.out.println(map.isEmpty());


        HashMap<Integer,Integer> map2 = new HashMap<>();
        //put既可以增加也可以当作修改
        map2.put(2,78);
        map2.put(3,223);
        map2.put(6,991);
        map2.put(3,0);
        System.out.println(new Integer(3));
        //并且当key值不是特别大时，可以使用数组代替
        int[] arr = new int[10];
        //上面的HashMap等同于下面数组
        arr[2] = 78;
        arr[3] = 223;
        arr[6] = 991;
        arr[3] = 0;
    }
}
